home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / webx / jpged26s.lzh / IDCT_Y.S < prev    next >
Encoding:
Text File  |  1995-09-07  |  29.0 KB  |  1,692 lines

  1. *
  2. *  IDCT_Y.S
  3. *
  4. *  ùúÄUâRâTâCâôïtò╧è╖üiéxɼò¬üj
  5. *
  6. *
  7. *
  8. .include    work.inc
  9.     .text
  10.     .xdef    IDCT_Y
  11.     .xref    IDCT_SU1,IDCT_SU2,IDCT_SU3,IDCT_SU4,IDCT_SU5,IDCT_SU6,IDCT_SU7,IDCT_SU8
  12.     .xref   IDCT_3_2
  13.     .xref    IDCT_SU3_16,IDCT_SU4_16,IDCT_SU5_16
  14.     .xref    COS_TBL_adrs
  15. *
  16. *  Inverse Digital Cosine Transformation
  17. *
  18. *     suv(w),sxy(w)...a0
  19. *     sxy 256èKÆ▓ data
  20. *
  21. *  ôⁿù═
  22. *    d0...âWâOâUâOâXâLâââôé┼ì┼îπé⌐éτÿAæ▒é╡é─éóéΘéOé╠Éö
  23. *  Åoù═
  24. *    a0...ăé╠data
  25. *
  26. IDCT_Y
  27.  
  28.     move.w    IDCT_TBL(pc,d0.w),d0
  29.     jmp    IDCT_Y(pc,d0.w)
  30.  
  31. IDCT_TBL    dc.w    IDCT_64-IDCT_Y
  32.         dc.w    IDCT_63-IDCT_Y
  33.         dc.w    IDCT_62-IDCT_Y
  34.         dc.w    IDCT_61-IDCT_Y
  35.         dc.w    IDCT_60-IDCT_Y
  36.         dc.w    IDCT_59-IDCT_Y
  37.         dc.w    IDCT_58-IDCT_Y
  38.         dc.w    IDCT_57-IDCT_Y
  39.         dc.w    IDCT_56-IDCT_Y
  40.         dc.w    IDCT_55-IDCT_Y
  41.         dc.w    IDCT_54-IDCT_Y
  42.         dc.w    IDCT_53-IDCT_Y
  43.         dc.w    IDCT_52-IDCT_Y
  44.         dc.w    IDCT_51-IDCT_Y
  45.         dc.w    IDCT_50-IDCT_Y
  46.         dc.w    IDCT_49-IDCT_Y
  47.         dc.w    IDCT_48-IDCT_Y
  48.         dc.w    IDCT_47-IDCT_Y
  49.         dc.w    IDCT_46-IDCT_Y
  50.         dc.w    IDCT_45-IDCT_Y
  51.         dc.w    IDCT_44-IDCT_Y
  52.         dc.w    IDCT_43-IDCT_Y
  53.         dc.w    IDCT_42-IDCT_Y
  54.         dc.w    IDCT_41-IDCT_Y
  55.         dc.w    IDCT_40-IDCT_Y
  56.         dc.w    IDCT_39-IDCT_Y
  57.         dc.w    IDCT_38-IDCT_Y
  58.         dc.w    IDCT_37-IDCT_Y
  59.         dc.w    IDCT_36-IDCT_Y
  60.         dc.w    IDCT_35-IDCT_Y
  61.         dc.w    IDCT_34-IDCT_Y
  62.         dc.w    IDCT_33-IDCT_Y
  63.         dc.w    IDCT_32-IDCT_Y
  64.         dc.w    IDCT_31-IDCT_Y
  65.         dc.w    IDCT_30-IDCT_Y
  66.         dc.w    IDCT_29-IDCT_Y
  67.         dc.w    IDCT_28-IDCT_Y
  68.         dc.w    IDCT_27-IDCT_Y
  69.         dc.w    IDCT_26-IDCT_Y
  70.         dc.w    IDCT_25-IDCT_Y
  71.         dc.w    IDCT_24-IDCT_Y
  72.         dc.w    IDCT_23-IDCT_Y
  73.         dc.w    IDCT_22-IDCT_Y
  74.         dc.w    IDCT_21-IDCT_Y
  75.         dc.w    IDCT_20-IDCT_Y
  76.         dc.w    IDCT_19-IDCT_Y
  77.         dc.w    IDCT_18-IDCT_Y
  78.         dc.w    IDCT_17-IDCT_Y
  79.         dc.w    IDCT_16-IDCT_Y
  80.         dc.w    IDCT_15-IDCT_Y
  81.         dc.w    IDCT_14-IDCT_Y
  82.         dc.w    IDCT_13-IDCT_Y
  83.         dc.w    IDCT_12-IDCT_Y
  84.         dc.w    IDCT_11-IDCT_Y
  85.         dc.w    IDCT_10-IDCT_Y
  86.         dc.w    IDCT_9-IDCT_Y
  87.         dc.w    IDCT_8-IDCT_Y
  88.         dc.w    IDCT_7-IDCT_Y
  89.         dc.w    IDCT_6-IDCT_Y
  90.         dc.w    IDCT_5-IDCT_Y
  91.         dc.w    IDCT_4-IDCT_Y
  92.         dc.w    IDCT_3-IDCT_Y
  93.         dc.w    IDCT_2-IDCT_Y
  94.         dc.w    IDCT_1-IDCT_Y
  95. *
  96. *  S'(y,u)
  97. *
  98.  
  99. IDCT_1
  100.         move.w  7*8*2+1*2(a0),0*8*2(a0)
  101.     rts
  102.  
  103. IDCT_2
  104.  
  105.       movea.w 5*8*2+1*2(a0),a1
  106.       adda.l  a6,a1
  107.       move.w  7*8*2+1*2(a0),d5
  108.  
  109.       move.w  (a1)+,d1        COS1
  110.       move.w  (a1)+,d0        COS3
  111.       move.w  (a1)+,d3        COS5
  112.       move.w  (a1),d2        COS7
  113.  
  114.       move.w  d5,d4
  115.       move.w  d4,d7
  116.       move.w  d5,d6
  117.  
  118.       sub.w   d1,d6       * S(7,y) = d4-d1
  119.       add.w   d1,d1
  120.       add.w   d6,d1        * S(0,y) = d4+d1 = d4-d1 + 2*d1 = S(7,y) + 2*d1
  121.  
  122.       sub.w   d2,d5        * S(4,y) = d4-d2
  123.       add.w   d2,d2
  124.       add.w   d5,d2        * S(3,y) = d4+d2 = d4-d2 + 2*d2 = S(4,y) +2*d2
  125.  
  126.       sub.w   d0,d7        * S(6,y) = d4-d0
  127.       add.w   d0,d0
  128.       add.w   d7,d0        * S(1,y) = d4+d0 = d4-d0 + 2*d0 = S(6,y) + 2*d0
  129.  
  130.       sub.w   d3,d4        * S(5,y) = d4-d3
  131.       add.w   d3,d3
  132.       add.w   d4,d3        * S(2,y) = d4+d3 = d4-d3 + 2*d3 = S(5,y) +2*d3
  133.  
  134.       lea.l    8*8*2(a0),a0
  135.       movem.w  d0-d7,-(a0)
  136.       movem.w  d0-d7,-(a0)
  137.       movem.w  d0-d7,-(a0)
  138.       movem.w  d0-d7,-(a0)
  139.  
  140.       movem.w  d0-d7,-(a0)
  141.       movem.w  d0-d7,-(a0)
  142.       movem.w  d0-d7,-(a0)
  143.       movem.w  d0-d7,-(a0)
  144.       rts
  145.  
  146. IDCT_3
  147.  
  148.   tst.w   5*8*2+1*2(a0)
  149.   beq     IDCT_3_1
  150.  
  151.     lea    -(64*2-2*2)(sp),sp
  152.     lea.l    7*16(a0),a0
  153.     move.w    -2*16+1*2(a0),-(sp)
  154.  
  155.     lea.l    @f(pc),a5
  156.     bra    IDCT_SU2
  157.  
  158. IDCT_3_1
  159.     movea.w    7*8*2+2*2(a0),a1
  160.     move.w    7*8*2+1*2(a0),d5
  161.     bra    IDCT_3_2
  162.  
  163. IDCT_4
  164.     lea    -(64*2-2*2)(sp),sp
  165.     lea.l    7*16(a0),a0
  166.     move.w    -2*16+1*2(a0),-(sp)
  167.  
  168.     lea.l    @f(pc),a5
  169.     bra    IDCT_SU3
  170. @@    dc.w    IDCT_clr6_SU1-*-2
  171.  
  172. IDCT_5
  173.     lea    -(64*2-2*2)(sp),sp
  174.     lea.l    5*16(a0),a0
  175.  
  176.     lea.l    @f(pc),a5
  177.     bra    IDCT_SU2
  178. @@    dc.w    IDCT_SU3_16-*-2
  179.     dc.w    IDCT_clr6-*-2
  180.  
  181.  
  182. IDCT_6
  183.     lea    -(64*2-3*2)(sp),sp
  184.     lea.l    4*16(a0),a0
  185.  
  186.     lea.l    @f(pc),a5
  187.     bra    IDCT_SU1
  188. @@    dc.w    IDCT_SU2-*-2
  189.     dc.w    IDCT_SU3_16-*-2
  190.     dc.w    IDCT_clr5-*-2
  191.  
  192.  
  193. IDCT_7
  194.     lea    -(64*2-4*2)(sp),sp
  195.     lea.l    4*16(a0),a0
  196.     move.w    -1*16+1*2(a0),-(sp)
  197.  
  198.     lea.l    @f(pc),a5
  199.     bra    IDCT_SU1
  200.  
  201. IDCT_8
  202.     lea    -(64*2-4*2)(sp),sp
  203.     lea.l    4*16(a0),a0
  204.     move.w    -1*16+1*2(a0),-(sp)
  205.  
  206.     lea.l    @f(pc),a5
  207.     bra    IDCT_SU2
  208. @@    dc.w    IDCT_SU2-*-2
  209.     dc.w    IDCT_SU3_16-*-2
  210.     dc.w    IDCT_clr4_SU1-*-2
  211.  
  212. IDCT_9
  213.     lea    -(64*2-4*2)(sp),sp
  214.     lea.l    4*16(a0),a0
  215.     move.w    -1*16+1*2(a0),-(sp)
  216.  
  217.     lea.l    @f(pc),a5
  218.     bra    IDCT_SU2
  219. @@    dc.w    IDCT_SU3-*-2
  220.     dc.w    IDCT_SU3_16-*-2
  221.     dc.w    IDCT_clr4_SU1-*-2
  222.  
  223. IDCT_10
  224.     lea    -(64*2-4*2)(sp),sp
  225.     lea.l    4*16(a0),a0
  226.     move.w    -1*16+1*2(a0),-(sp)
  227.  
  228.     lea.l    @f(pc),a5
  229.     bra    IDCT_SU2
  230. @@    dc.w    IDCT_SU3-*-2
  231.     dc.w    IDCT_SU4_16-*-2
  232.     dc.w    IDCT_clr4_SU1-*-2
  233.  
  234. IDCT_11
  235.     lea    -(64*2-4*2)(sp),sp
  236.     lea.l    4*16(a0),a0
  237.     move.w    -1*16+1*2(a0),-(sp)
  238.  
  239.     lea.l    @f(pc),a5
  240.     bra    IDCT_SU2
  241. @@    dc.w    IDCT_SU3-*-2
  242.     dc.w    IDCT_SU5_16-*-2
  243.     dc.w    IDCT_clr4_SU1-*-2
  244.  
  245. IDCT_12
  246.     lea    -(64*2-4*2)(sp),sp
  247.     lea.l    4*16(a0),a0
  248.     move.w    -1*16+1*2(a0),-(sp)
  249.  
  250.     lea.l    @f(pc),a5
  251.     bra    IDCT_SU2
  252.  
  253. IDCT_13
  254.     lea    -(64*2-4*2)(sp),sp
  255.     lea.l    4*16(a0),a0
  256.     move.w    -1*16+1*2(a0),-(sp)
  257.  
  258.     lea.l    @f(pc),a5
  259.     bra    IDCT_SU3
  260. @@    dc.w    IDCT_SU4-*-2
  261.     dc.w    IDCT_SU5_16-*-2
  262.     dc.w    IDCT_clr4_SU1-*-2
  263.  
  264. IDCT_14
  265.     lea    -(64*2-4*2)(sp),sp
  266.     lea.l    3*16(a0),a0
  267.  
  268.     lea.l    @f(pc),a5
  269.     bra    IDCT_SU2
  270. @@    dc.w    IDCT_SU3-*-2
  271.     dc.w    IDCT_SU4-*-2
  272.     dc.w    IDCT_SU5_16-*-2
  273.     dc.w    IDCT_clr4-*-2
  274.  
  275. IDCT_15
  276.     lea    -(64*2-5*2)(sp),sp
  277.     lea.l    3*16(a0),a0
  278.  
  279.     lea.l    @f(pc),a5
  280.     bra    IDCT_SU2
  281. @@    dc.w    IDCT_SU3-*-2
  282.     dc.w    IDCT_SU4-*-2
  283.     dc.w    IDCT_SU1-*-2
  284.     dc.w    IDCT_SU5-*-2
  285.     dc.w    IDCT_clr3-*-2
  286.  
  287. IDCT_16
  288.     lea    -(64*2-6*2)(sp),sp
  289.     lea.l    3*16(a0),a0
  290.     move.w    -1*16+1*2(a0),-(sp)
  291.  
  292.     lea.l    @f(pc),a5
  293.     bra    IDCT_SU2
  294. @@    dc.w    IDCT_SU3-*-2
  295.     dc.w    IDCT_SU4-*-2
  296.     dc.w    IDCT_SU1-*-2
  297.     dc.w    IDCT_SU5-*-2
  298.     dc.w    IDCT_clr2_SU1-*-2
  299.  
  300. IDCT_17
  301.     lea    -(64*2-6*2)(sp),sp
  302.     lea.l    3*16(a0),a0
  303.     move.w    -1*16+1*2(a0),-(sp)
  304.  
  305.     lea.l    @f(pc),a5
  306.     bra    IDCT_SU2
  307. @@    dc.w    IDCT_SU3-*-2
  308.     dc.w    IDCT_SU4-*-2
  309.     dc.w    IDCT_SU2-*-2
  310.     dc.w    IDCT_SU5-*-2
  311.     dc.w    IDCT_clr2_SU1-*-2
  312.  
  313. IDCT_18
  314.     lea    -(64*2-6*2)(sp),sp
  315.     lea.l    3*16(a0),a0
  316.     move.w    -1*16+1*2(a0),-(sp)
  317.  
  318.     lea.l    @f(pc),a5
  319.     bra    IDCT_SU3
  320. @@    dc.w    IDCT_SU3-*-2
  321.     dc.w    IDCT_SU4-*-2
  322.     dc.w    IDCT_SU2-*-2
  323.     dc.w    IDCT_SU5-*-2
  324.     dc.w    IDCT_clr2_SU1-*-2
  325.  
  326. IDCT_19
  327.     lea    -(64*2-6*2)(sp),sp
  328.     lea.l    3*16(a0),a0
  329.     move.w    -1*16+1*2(a0),-(sp)
  330.  
  331.     lea.l    @f(pc),a5
  332.     bra    IDCT_SU3
  333. @@    dc.w    IDCT_SU4-*-2
  334.     dc.w    IDCT_SU4-*-2
  335.     dc.w    IDCT_SU2-*-2
  336.     dc.w    IDCT_SU5-*-2
  337.     dc.w    IDCT_clr2_SU1-*-2
  338.  
  339. IDCT_20
  340.     lea    -(64*2-6*2)(sp),sp
  341.     lea.l    3*16(a0),a0
  342.     move.w    -1*16+1*2(a0),-(sp)
  343.  
  344.     lea.l    @f(pc),a5
  345.     bra    IDCT_SU3
  346. @@    dc.w    IDCT_SU4-*-2
  347.     dc.w    IDCT_SU5-*-2
  348.     dc.w    IDCT_SU2-*-2
  349.     dc.w    IDCT_SU5-*-2
  350.     dc.w    IDCT_clr2_SU1-*-2
  351.  
  352. IDCT_21
  353.     lea    -(64*2-6*2)(sp),sp
  354.     lea.l    3*16(a0),a0
  355.     move.w    -1*16+1*2(a0),-(sp)
  356.  
  357.     lea.l    @f(pc),a5
  358.     bra    IDCT_SU3
  359. @@    dc.w    IDCT_SU4-*-2
  360.     dc.w    IDCT_SU5-*-2
  361.     dc.w    IDCT_SU2-*-2
  362.     dc.w    IDCT_SU6-*-2
  363.     dc.w    IDCT_clr2_SU1-*-2
  364.  
  365. IDCT_22
  366.     lea    -(64*2-6*2)(sp),sp
  367.     lea.l    3*16(a0),a0
  368.     move.w    -1*16+1*2(a0),-(sp)
  369.  
  370.     lea.l    @f(pc),a5
  371.     bra    IDCT_SU3
  372. @@    dc.w    IDCT_SU4-*-2
  373.     dc.w    IDCT_SU5-*-2
  374.     dc.w    IDCT_SU2-*-2
  375.     dc.w    IDCT_SU7-*-2
  376.     dc.w    IDCT_clr2_SU1-*-2
  377.  
  378. IDCT_23
  379.     lea    -(64*2-6*2)(sp),sp
  380.     lea.l    3*16(a0),a0
  381.     move.w    -1*16+1*2(a0),-(sp)
  382.  
  383.     lea.l    @f(pc),a5
  384.     bra    IDCT_SU3
  385. @@    dc.w    IDCT_SU4-*-2
  386.     dc.w    IDCT_SU6-*-2
  387.     dc.w    IDCT_SU2-*-2
  388.     dc.w    IDCT_SU7-*-2
  389.     dc.w    IDCT_clr2_SU1-*-2
  390.  
  391. IDCT_24
  392.     lea    -(64*2-6*2)(sp),sp
  393.     lea.l    3*16(a0),a0
  394.     move.w    -1*16+1*2(a0),-(sp)
  395.  
  396.     lea.l    @f(pc),a5
  397.     bra    IDCT_SU3
  398. @@    dc.w    IDCT_SU5-*-2
  399.     dc.w    IDCT_SU6-*-2
  400.     dc.w    IDCT_SU2-*-2
  401.     dc.w    IDCT_SU7-*-2
  402.     dc.w    IDCT_clr2_SU1-*-2
  403.  
  404. IDCT_25
  405.     lea    -(64*2-6*2)(sp),sp
  406.     lea.l    3*16(a0),a0
  407.     move.w    -1*16+1*2(a0),-(sp)
  408.  
  409.     lea.l    @f(pc),a5
  410.     bra    IDCT_SU4
  411. @@    dc.w    IDCT_SU5-*-2
  412.     dc.w    IDCT_SU6-*-2
  413.     dc.w    IDCT_SU2-*-2
  414.     dc.w    IDCT_SU7-*-2
  415.     dc.w    IDCT_clr2_SU1-*-2
  416.  
  417. IDCT_26
  418.     lea    -(64*2-6*2)(sp),sp
  419.     lea.l    3*16(a0),a0
  420.     move.w    -1*16+1*2(a0),-(sp)
  421.  
  422.     lea.l    @f(pc),a5
  423.     bra    IDCT_SU4
  424. @@    dc.w    IDCT_SU5-*-2
  425.     dc.w    IDCT_SU6-*-2
  426.     dc.w    IDCT_SU3-*-2
  427.     dc.w    IDCT_SU7-*-2
  428.     dc.w    IDCT_clr2_SU1-*-2
  429.  
  430. IDCT_27
  431.     lea    -(64*2-6*2)(sp),sp
  432.     lea.l    2*16(a0),a0
  433.  
  434.     lea.l    @f(pc),a5
  435.     bra    IDCT_SU2
  436. @@    dc.w    IDCT_SU4-*-2
  437.     dc.w    IDCT_SU5-*-2
  438.     dc.w    IDCT_SU6-*-2
  439.     dc.w    IDCT_SU3-*-2
  440.     dc.w    IDCT_SU7-*-2
  441.     dc.w    IDCT_clr2-*-2
  442.  
  443. IDCT_28
  444.     lea    -(64*2-7*2)(sp),sp
  445.     lea.l    1*16(a0),a0
  446.  
  447.     lea.l    @f(pc),a5
  448.     bra    IDCT_SU1
  449. @@    dc.w    IDCT_SU2-*-2
  450.     dc.w    IDCT_SU4-*-2
  451.     dc.w    IDCT_SU5-*-2
  452.     dc.w    IDCT_SU6-*-2
  453.     dc.w    IDCT_SU3-*-2
  454.     dc.w    IDCT_SU7-*-2
  455.     dc.w    IDCT_clr1-*-2
  456.  
  457. IDCT_29
  458.     lea    -(64*2-8*2)(sp),sp
  459.     move.w    1*2(a0),-(sp)
  460.     lea.l    1*16(a0),a0
  461.  
  462.     lea.l    @f(pc),a5
  463.     bra    IDCT_SU1
  464.  
  465. IDCT_30
  466.     lea    -(64*2-8*2)(sp),sp
  467.     move.w    1*2(a0),-(sp)
  468.     lea.l    1*16(a0),a0
  469.  
  470.     lea.l    @f(pc),a5
  471.     bra    IDCT_SU2
  472. @@    dc.w    IDCT_SU2-*-2
  473.     dc.w    IDCT_SU4-*-2
  474.     dc.w    IDCT_SU5-*-2
  475.     dc.w    IDCT_SU6-*-2
  476.     dc.w    IDCT_SU3-*-2
  477.     dc.w    IDCT_SU7-*-2
  478.     dc.w    IDCT_normal_SU1-*-2
  479.  
  480. IDCT_31
  481.     lea    -(64*2-8*2)(sp),sp
  482.     move.w    1*2(a0),-(sp)
  483.     lea.l    1*16(a0),a0
  484.  
  485.     lea.l    @f(pc),a5
  486.     bra    IDCT_SU2
  487. @@    dc.w    IDCT_SU3-*-2
  488.     dc.w    IDCT_SU4-*-2
  489.     dc.w    IDCT_SU5-*-2
  490.     dc.w    IDCT_SU6-*-2
  491.     dc.w    IDCT_SU3-*-2
  492.     dc.w    IDCT_SU7-*-2
  493.     dc.w    IDCT_normal_SU1-*-2
  494.  
  495. IDCT_32
  496.     lea    -(64*2-8*2)(sp),sp
  497.     move.w    1*2(a0),-(sp)
  498.     lea.l    1*16(a0),a0
  499.  
  500.     lea.l    @f(pc),a5
  501.     bra    IDCT_SU2
  502. @@    dc.w    IDCT_SU3-*-2
  503.     dc.w    IDCT_SU4-*-2
  504.     dc.w    IDCT_SU5-*-2
  505.     dc.w    IDCT_SU6-*-2
  506.     dc.w    IDCT_SU4-*-2
  507.     dc.w    IDCT_SU7-*-2
  508.     dc.w    IDCT_normal_SU1-*-2
  509.  
  510. IDCT_33
  511.     lea    -(64*2-8*2)(sp),sp
  512.     move.w    1*2(a0),-(sp)
  513.     lea.l    1*16(a0),a0
  514.  
  515.     lea.l    @f(pc),a5
  516.     bra    IDCT_SU2
  517. @@    dc.w    IDCT_SU3-*-2
  518.     dc.w    IDCT_SU5-*-2
  519.     dc.w    IDCT_SU5-*-2
  520.     dc.w    IDCT_SU6-*-2
  521.     dc.w    IDCT_SU4-*-2
  522.     dc.w    IDCT_SU7-*-2
  523.     dc.w    IDCT_normal_SU1-*-2
  524.  
  525. IDCT_34
  526.     lea    -(64*2-8*2)(sp),sp
  527.     move.w    1*2(a0),-(sp)
  528.     lea.l    1*16(a0),a0
  529.  
  530.     lea.l    @f(pc),a5
  531.     bra    IDCT_SU2
  532. @@    dc.w    IDCT_SU3-*-2
  533.     dc.w    IDCT_SU5-*-2
  534.     dc.w    IDCT_SU6-*-2
  535.     dc.w    IDCT_SU6-*-2
  536.     dc.w    IDCT_SU4-*-2
  537.     dc.w    IDCT_SU7-*-2
  538.     dc.w    IDCT_normal_SU1-*-2
  539.  
  540. IDCT_35
  541.     lea    -(64*2-8*2)(sp),sp
  542.     move.w    1*2(a0),-(sp)
  543.     lea.l    1*16(a0),a0
  544.  
  545.     lea.l    @f(pc),a5
  546.     bra    IDCT_SU2
  547. @@    dc.w    IDCT_SU3-*-2
  548.     dc.w    IDCT_SU5-*-2
  549.     dc.w    IDCT_SU6-*-2
  550.     dc.w    IDCT_SU7-*-2
  551.     dc.w    IDCT_SU4-*-2
  552.     dc.w    IDCT_SU7-*-2
  553.     dc.w    IDCT_normal_SU1-*-2
  554.  
  555. IDCT_36
  556.     lea    -(64*2-8*2)(sp),sp
  557.     move.w    1*2(a0),-(sp)
  558.     lea.l    1*16(a0),a0
  559.  
  560.     lea.l    @f(pc),a5
  561.     bra    IDCT_SU2
  562. @@    dc.w    IDCT_SU3-*-2
  563.     dc.w    IDCT_SU5-*-2
  564.     dc.w    IDCT_SU6-*-2
  565.     dc.w    IDCT_SU7-*-2
  566.     dc.w    IDCT_SU4-*-2
  567.     dc.w    IDCT_SU8-*-2
  568.     dc.w    IDCT_normal_SU1-*-2
  569.  
  570. IDCT_37
  571.     lea    -(64*2-8*2)(sp),sp
  572.     move.w    1*2(a0),-(sp)
  573.     lea.l    1*16(a0),a0
  574.  
  575.     lea.l    @f(pc),a5
  576.     bra    IDCT_SU2
  577. @@    dc.w    IDCT_SU3-*-2
  578.     dc.w    IDCT_SU5-*-2
  579.     dc.w    IDCT_SU6-*-2
  580.     dc.w    IDCT_SU8-*-2
  581.     dc.w    IDCT_SU4-*-2
  582.     dc.w    IDCT_SU8-*-2
  583.     dc.w    IDCT_normal_SU1-*-2
  584.  
  585. IDCT_38
  586.     lea    -(64*2-8*2)(sp),sp
  587.     move.w    1*2(a0),-(sp)
  588.     lea.l    1*16(a0),a0
  589.  
  590.     lea.l    @f(pc),a5
  591.     bra    IDCT_SU2
  592. @@    dc.w    IDCT_SU3-*-2
  593.     dc.w    IDCT_SU5-*-2
  594.     dc.w    IDCT_SU7-*-2
  595.     dc.w    IDCT_SU8-*-2
  596.     dc.w    IDCT_SU4-*-2
  597.     dc.w    IDCT_SU8-*-2
  598.     dc.w    IDCT_normal_SU1-*-2
  599.  
  600. IDCT_39
  601.     lea    -(64*2-8*2)(sp),sp
  602.     move.w    1*2(a0),-(sp)
  603.     lea.l    1*16(a0),a0
  604.  
  605.     lea.l    @f(pc),a5
  606.     bra    IDCT_SU2
  607. @@    dc.w    IDCT_SU3-*-2
  608.     dc.w    IDCT_SU6-*-2
  609.     dc.w    IDCT_SU7-*-2
  610.     dc.w    IDCT_SU8-*-2
  611.     dc.w    IDCT_SU4-*-2
  612.     dc.w    IDCT_SU8-*-2
  613.     dc.w    IDCT_normal_SU1-*-2
  614.  
  615. IDCT_40
  616.     lea    -(64*2-8*2)(sp),sp
  617.     move.w    1*2(a0),-(sp)
  618.     lea.l    1*16(a0),a0
  619.  
  620.     lea.l    @f(pc),a5
  621.     bra    IDCT_SU2
  622. @@    dc.w    IDCT_SU3-*-2
  623.     dc.w    IDCT_SU6-*-2
  624.     dc.w    IDCT_SU7-*-2
  625.     dc.w    IDCT_SU8-*-2
  626.     dc.w    IDCT_SU5-*-2
  627.     dc.w    IDCT_SU8-*-2
  628.     dc.w    IDCT_normal_SU1-*-2
  629.  
  630. IDCT_41
  631.     lea    -(64*2-8*2)(sp),sp
  632.     move.w    1*2(a0),-(sp)
  633.     lea.l    1*16(a0),a0
  634.  
  635.     lea.l    @f(pc),a5
  636.     bra    IDCT_SU2
  637. @@    dc.w    IDCT_SU4-*-2
  638.     dc.w    IDCT_SU6-*-2
  639.     dc.w    IDCT_SU7-*-2
  640.     dc.w    IDCT_SU8-*-2
  641.     dc.w    IDCT_SU5-*-2
  642.     dc.w    IDCT_SU8-*-2
  643.     dc.w    IDCT_normal_SU1-*-2
  644.  
  645. IDCT_42
  646.     lea    -(64*2-8*2)(sp),sp
  647.     move.w    1*2(a0),-(sp)
  648.     lea.l    1*16(a0),a0
  649.  
  650.     lea.l    @f(pc),a5
  651.     bra    IDCT_SU3
  652. @@    dc.w    IDCT_SU4-*-2
  653.     dc.w    IDCT_SU6-*-2
  654.     dc.w    IDCT_SU7-*-2
  655.     dc.w    IDCT_SU8-*-2
  656.     dc.w    IDCT_SU5-*-2
  657.     dc.w    IDCT_SU8-*-2
  658.     dc.w    IDCT_normal_SU1-*-2
  659.  
  660. IDCT_43
  661.     lea    -(64*2-8*2)(sp),sp
  662.  
  663.     lea.l    @f(pc),a5
  664.     bra    IDCT_SU2
  665.  
  666. IDCT_44
  667.     lea    -(64*2-8*2)(sp),sp
  668.  
  669.     lea.l    @f(pc),a5
  670.     bra    IDCT_SU3
  671. @@    dc.w    IDCT_SU3-*-2
  672.     dc.w    IDCT_SU4-*-2
  673.     dc.w    IDCT_SU6-*-2
  674.     dc.w    IDCT_SU7-*-2
  675.     dc.w    IDCT_SU8-*-2
  676.     dc.w    IDCT_SU5-*-2
  677.     dc.w    IDCT_SU8-*-2
  678.     dc.w    IDCT_normal-*-2
  679.  
  680. IDCT_45
  681.     lea    -(64*2-8*2)(sp),sp
  682.  
  683.     lea.l    @f(pc),a5
  684.     bra    IDCT_SU3
  685. @@    dc.w    IDCT_SU4-*-2
  686.     dc.w    IDCT_SU4-*-2
  687.     dc.w    IDCT_SU6-*-2
  688.     dc.w    IDCT_SU7-*-2
  689.     dc.w    IDCT_SU8-*-2
  690.     dc.w    IDCT_SU5-*-2
  691.     dc.w    IDCT_SU8-*-2
  692.     dc.w    IDCT_normal-*-2
  693.  
  694. IDCT_46
  695.     lea    -(64*2-8*2)(sp),sp
  696.  
  697.     lea.l    @f(pc),a5
  698.     bra    IDCT_SU3
  699. @@    dc.w    IDCT_SU4-*-2
  700.     dc.w    IDCT_SU5-*-2
  701.     dc.w    IDCT_SU6-*-2
  702.     dc.w    IDCT_SU7-*-2
  703.     dc.w    IDCT_SU8-*-2
  704.     dc.w    IDCT_SU5-*-2
  705.     dc.w    IDCT_SU8-*-2
  706.     dc.w    IDCT_normal-*-2
  707.  
  708. IDCT_47
  709.     lea    -(64*2-8*2)(sp),sp
  710.  
  711.     lea.l    @f(pc),a5
  712.     bra    IDCT_SU3
  713. @@    dc.w    IDCT_SU4-*-2
  714.     dc.w    IDCT_SU5-*-2
  715.     dc.w    IDCT_SU6-*-2
  716.     dc.w    IDCT_SU7-*-2
  717.     dc.w    IDCT_SU8-*-2
  718.     dc.w    IDCT_SU6-*-2
  719.     dc.w    IDCT_SU8-*-2
  720.     dc.w    IDCT_normal-*-2
  721.  
  722. IDCT_48
  723.     lea    -(64*2-8*2)(sp),sp
  724.  
  725.     lea.l    @f(pc),a5
  726.     bra    IDCT_SU3
  727. @@    dc.w    IDCT_SU4-*-2
  728.     dc.w    IDCT_SU5-*-2
  729.     dc.w    IDCT_SU7-*-2
  730.     dc.w    IDCT_SU7-*-2
  731.     dc.w    IDCT_SU8-*-2
  732.     dc.w    IDCT_SU6-*-2
  733.     dc.w    IDCT_SU8-*-2
  734.     dc.w    IDCT_normal-*-2
  735.  
  736. IDCT_49
  737.     lea    -(64*2-8*2)(sp),sp
  738.  
  739.     lea.l    @f(pc),a5
  740.     bra    IDCT_SU3
  741. @@    dc.w    IDCT_SU4-*-2
  742.     dc.w    IDCT_SU5-*-2
  743.     dc.w    IDCT_SU7-*-2
  744.     dc.w    IDCT_SU8-*-2
  745.     dc.w    IDCT_SU8-*-2
  746.     dc.w    IDCT_SU6-*-2
  747.     dc.w    IDCT_SU8-*-2
  748.     dc.w    IDCT_normal-*-2
  749.  
  750. IDCT_50
  751.     lea    -(64*2-8*2)(sp),sp
  752.  
  753.     lea.l    @f(pc),a5
  754.     bra    IDCT_SU3
  755. @@    dc.w    IDCT_SU4-*-2
  756.     dc.w    IDCT_SU5-*-2
  757.     dc.w    IDCT_SU8-*-2
  758.     dc.w    IDCT_SU8-*-2
  759.     dc.w    IDCT_SU8-*-2
  760.     dc.w    IDCT_SU6-*-2
  761.     dc.w    IDCT_SU8-*-2
  762.     dc.w    IDCT_normal-*-2
  763.  
  764. IDCT_51
  765.     lea    -(64*2-8*2)(sp),sp
  766.  
  767.     lea.l    @f(pc),a5
  768.     bra    IDCT_SU3
  769. @@    dc.w    IDCT_SU4-*-2
  770.     dc.w    IDCT_SU5-*-2
  771.     dc.w    IDCT_SU8-*-2
  772.     dc.w    IDCT_SU8-*-2
  773.     dc.w    IDCT_SU8-*-2
  774.     dc.w    IDCT_SU7-*-2
  775.     dc.w    IDCT_SU8-*-2
  776.     dc.w    IDCT_normal-*-2
  777.  
  778. IDCT_52
  779.     lea    -(64*2-8*2)(sp),sp
  780.  
  781.     lea.l    @f(pc),a5
  782.     bra    IDCT_SU3
  783. @@    dc.w    IDCT_SU4-*-2
  784.     dc.w    IDCT_SU6-*-2
  785.     dc.w    IDCT_SU8-*-2
  786.     dc.w    IDCT_SU8-*-2
  787.     dc.w    IDCT_SU8-*-2
  788.     dc.w    IDCT_SU7-*-2
  789.     dc.w    IDCT_SU8-*-2
  790.     dc.w    IDCT_normal-*-2
  791.  
  792. IDCT_53
  793.     lea    -(64*2-8*2)(sp),sp
  794.  
  795.     lea.l    @f(pc),a5
  796.     bra    IDCT_SU3
  797.  
  798. IDCT_54
  799.     lea    -(64*2-8*2)(sp),sp
  800.  
  801.     lea.l    @f(pc),a5
  802.     bra    IDCT_SU4
  803.  
  804. IDCT_55
  805.     lea    -(64*2-8*2)(sp),sp
  806.  
  807.     lea.l    @f(pc),a5
  808.     bra    IDCT_SU5
  809. @@    dc.w    IDCT_SU5-*-2
  810.     dc.w    IDCT_SU6-*-2
  811.     dc.w    IDCT_SU8-*-2
  812.     dc.w    IDCT_SU8-*-2
  813.     dc.w    IDCT_SU8-*-2
  814.     dc.w    IDCT_SU7-*-2
  815.     dc.w    IDCT_SU8-*-2
  816.     dc.w    IDCT_normal-*-2
  817.  
  818. IDCT_56
  819.     lea    -(64*2-8*2)(sp),sp
  820.  
  821.     lea.l    @f(pc),a5
  822.     bra    IDCT_SU5
  823. @@    dc.w    IDCT_SU6-*-2
  824.     dc.w    IDCT_SU6-*-2
  825.     dc.w    IDCT_SU8-*-2
  826.     dc.w    IDCT_SU8-*-2
  827.     dc.w    IDCT_SU8-*-2
  828.     dc.w    IDCT_SU7-*-2
  829.     dc.w    IDCT_SU8-*-2
  830.     dc.w    IDCT_normal-*-2
  831.  
  832. IDCT_57
  833.     lea    -(64*2-8*2)(sp),sp
  834.  
  835.     lea.l    @f(pc),a5
  836.     bra    IDCT_SU5
  837. @@    dc.w    IDCT_SU6-*-2
  838.     dc.w    IDCT_SU7-*-2
  839.     dc.w    IDCT_SU8-*-2
  840.     dc.w    IDCT_SU8-*-2
  841.     dc.w    IDCT_SU8-*-2
  842.     dc.w    IDCT_SU7-*-2
  843.     dc.w    IDCT_SU8-*-2
  844.     dc.w    IDCT_normal-*-2
  845.  
  846. IDCT_58
  847.     lea    -(64*2-8*2)(sp),sp
  848.  
  849.     lea.l    @f(pc),a5
  850.     bra    IDCT_SU5
  851. @@    dc.w    IDCT_SU6-*-2
  852.     dc.w    IDCT_SU7-*-2
  853.     dc.w    IDCT_SU8-*-2
  854.     dc.w    IDCT_SU8-*-2
  855.     dc.w    IDCT_SU8-*-2
  856.     dc.w    IDCT_SU8-*-2
  857.     dc.w    IDCT_SU8-*-2
  858.     dc.w    IDCT_normal-*-2
  859.  
  860. IDCT_59
  861.     lea    -(64*2-8*2)(sp),sp
  862.  
  863.     lea.l    @f(pc),a5
  864.     bra    IDCT_SU5
  865. @@    dc.w    IDCT_SU6-*-2
  866.     dc.w    IDCT_SU8-*-2
  867.     dc.w    IDCT_SU8-*-2
  868.     dc.w    IDCT_SU8-*-2
  869.     dc.w    IDCT_SU8-*-2
  870.     dc.w    IDCT_SU8-*-2
  871.     dc.w    IDCT_SU8-*-2
  872.     dc.w    IDCT_normal-*-2
  873.  
  874. IDCT_60
  875.     lea    -(64*2-8*2)(sp),sp
  876.  
  877.     lea.l    @f(pc),a5
  878.     bra    IDCT_SU5
  879.  
  880. IDCT_61
  881.     lea    -(64*2-8*2)(sp),sp
  882.  
  883.     lea.l    @f(pc),a5
  884.     bra    IDCT_SU6
  885.  
  886. IDCT_62
  887.     lea    -(64*2-8*2)(sp),sp
  888.  
  889.     lea.l    @f(pc),a5
  890.     bra    IDCT_SU7
  891. @@    dc.w    IDCT_SU7-*-2
  892.     dc.w    IDCT_SU8-*-2
  893.     dc.w    IDCT_SU8-*-2
  894.     dc.w    IDCT_SU8-*-2
  895.     dc.w    IDCT_SU8-*-2
  896.     dc.w    IDCT_SU8-*-2
  897.     dc.w    IDCT_SU8-*-2
  898.     dc.w    IDCT_normal-*-2
  899.  
  900.  
  901. IDCT_63
  902.     lea    -(64*2-8*2)(sp),sp
  903.  
  904.     lea.l    @f(pc),a5
  905.     bra    IDCT_SU7
  906.  
  907. IDCT_64
  908.     lea    -(64*2-8*2)(sp),sp
  909.  
  910.     lea.l    @f(pc),a5
  911.     bra    IDCT_SU8
  912. @@    dc.w    IDCT_SU8-*-2
  913.     dc.w    IDCT_SU8-*-2
  914.     dc.w    IDCT_SU8-*-2
  915.     dc.w    IDCT_SU8-*-2
  916.     dc.w    IDCT_SU8-*-2
  917.     dc.w    IDCT_SU8-*-2
  918.     dc.w    IDCT_SU8-*-2
  919.     dc.w    IDCT_normal-*-2
  920.  
  921. IDCT_normal
  922. *
  923. *  S(x,y)
  924. *
  925.   moveq   #8-1,d7
  926. sy00
  927.     swap.w  d7
  928.  
  929.     movem.w (sp)+,d4-d6/a1-a5
  930.  
  931.     adda.l a6,a1
  932.     adda.l a6,a2
  933.     adda.l a6,a3
  934.     adda.l a6,a4
  935.     adda.l a6,a5
  936.  
  937.     movem.w (a6,d6.w),d0-d3
  938.     exg.l   d0,d1    d1=COS1,d0=COS3
  939.     exg.l   d2,d3    d3=COS5,d2=COS7
  940.  
  941.     sub.w   (a2)+,d3
  942.     add.w   (a2)+,d1
  943.     sub.w   (a2)+,d2
  944.     sub.w   (a2),d0
  945.  
  946.     sub.w   (a3)+,d0
  947.     add.w   (a3)+,d2
  948.     add.w   (a3)+,d1
  949.     add.w   (a3),d3
  950.  
  951.     sub.w   (a5)+,d2  * d2 = S1*cos7+S3*cos5+S5*cos3+S7*cos1
  952.     add.w   (a5)+,d3  * d3 = S1*cos5-S3*cos1+S5*cos7+S7*cos3
  953.     sub.w   (a5)+,d0  * d0 = S1*cos3-S3*cos7-S5*cos1-S7*cos5
  954.     add.w   (a5),d1  * d1 = S1*cos1+S3*cos3+S5*cos5+S7*cos7
  955.  
  956.     move.w  -(a1),d6    COS2
  957.     move.w  -(a1),d7    COS6
  958.     sub.w   -(a4),d7    * d7 =S2*cos6+S6*cos2
  959.     add.w   -(a4),d6    * d6 =S2*cos2+S6*cos6
  960.  
  961.     sub.w   d5,d4  * d4=s0-s4
  962.     add.w   d5,d5
  963.     add.w   d4,d5  * d5=s0+s4
  964. *
  965.     sub.w   d7,d4    * d4=d4-d7
  966.     add.w   d7,d7
  967.     add.w   d4,d7    * d7=d4+d7
  968. *
  969.     sub.w   d6,d5    * d5=d5-d6
  970.     add.w   d6,d6
  971.     add.w   d5,d6    * d6=d5+d6
  972. *
  973. *  S(1,y),S(6,y)
  974. *
  975.     sub.w   d0,d7    S(6,y)
  976.     add.w   d0,d0
  977.     add.w   d7,d0    S(1,y)
  978. *
  979. *  S(0,y),S(7,y)
  980. *
  981.     sub.w   d1,d6    S(7,y)
  982.     add.w   d1,d1
  983.     add.w   d6,d1    S(0,y)
  984. *
  985. *  S(3,y),S(4,y)
  986. *
  987.     sub.w   d2,d5       S(4,y)
  988.     add.w   d2,d2
  989.     add.w   d5,d2       S(3,y)
  990. *
  991. *  S(2,y),S(5,y)
  992. *
  993.     sub.w   d3,d4    S(5,y)
  994.     add.w   d3,d3
  995.     add.w   d4,d3    S(2,y)
  996.     movem.w d0-d7,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  997. *
  998.     swap.w  d7
  999.     dbra    d7,sy00
  1000. *
  1001.   rts
  1002.  
  1003.  
  1004. IDCT_normal_SU1
  1005. *
  1006. *  S(x,y)
  1007. *
  1008.   move.w  7*2(sp),d0
  1009.   beq     IDCT_clr1
  1010.  
  1011.   move.w  d0,a5
  1012.   adda.l  a6,a5
  1013.   moveq   #8-1,d7
  1014. sy00_SU1
  1015.     swap.w  d7
  1016.  
  1017.     movem.w (sp)+,d4-d6/a1-a4
  1018.     addq.l  #2,sp
  1019.  
  1020.     adda.l a6,a1
  1021.     adda.l a6,a2
  1022.     adda.l a6,a3
  1023.     adda.l a6,a4
  1024.  
  1025.     movem.w (a6,d6.w),d0-d3
  1026.     exg.l   d0,d1    d1=COS1,d0=COS3
  1027.     exg.l   d2,d3    d3=COS5,d2=COS7
  1028.  
  1029.     sub.w   (a2)+,d3
  1030.     add.w   (a2)+,d1
  1031.     sub.w   (a2)+,d2
  1032.     sub.w   (a2),d0
  1033.  
  1034.     sub.w   (a3)+,d0
  1035.     add.w   (a3)+,d2
  1036.     add.w   (a3)+,d1
  1037.     add.w   (a3),d3
  1038.  
  1039.     sub.w   (a5)+,d2  * d2 = S1*cos7+S3*cos5+S5*cos3+S7*cos1
  1040.     add.w   (a5)+,d3  * d3 = S1*cos5-S3*cos1+S5*cos7+S7*cos3
  1041.     sub.w   (a5)+,d0  * d0 = S1*cos3-S3*cos7-S5*cos1-S7*cos5
  1042.     add.w   (a5),d1  * d1 = S1*cos1+S3*cos3+S5*cos5+S7*cos7
  1043.     subq.w  #3*2,a5
  1044.  
  1045.     move.w  -(a1),d6    COS2
  1046.     move.w  -(a1),d7    COS6
  1047.     sub.w   -(a4),d7    * d7 =S2*cos6+S6*cos2
  1048.     add.w   -(a4),d6    * d6 =S2*cos2+S6*cos6
  1049.  
  1050.     sub.w   d5,d4  * d4=s0-s4
  1051.     add.w   d5,d5
  1052.     add.w   d4,d5  * d5=s0+s4
  1053. *
  1054.     sub.w   d7,d4    * d4=d4-d7
  1055.     add.w   d7,d7
  1056.     add.w   d4,d7    * d7=d4+d7
  1057. *
  1058.     sub.w   d6,d5    * d5=d5-d6
  1059.     add.w   d6,d6
  1060.     add.w   d5,d6    * d6=d5+d6
  1061. *
  1062. *  S(1,y),S(6,y)
  1063. *
  1064.     sub.w   d0,d7    S(6,y)
  1065.     add.w   d0,d0
  1066.     add.w   d7,d0    S(1,y)
  1067. *
  1068. *  S(0,y),S(7,y)
  1069. *
  1070.     sub.w   d1,d6    S(7,y)
  1071.     add.w   d1,d1
  1072.     add.w   d6,d1    S(0,y)
  1073. *
  1074. *  S(3,y),S(4,y)
  1075. *
  1076.     sub.w   d2,d5       S(4,y)
  1077.     add.w   d2,d2
  1078.     add.w   d5,d2       S(3,y)
  1079. *
  1080. *  S(2,y),S(5,y)
  1081. *
  1082.     sub.w   d3,d4    S(5,y)
  1083.     add.w   d3,d3
  1084.     add.w   d4,d3    S(2,y)
  1085.     movem.w d0-d7,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1086. *
  1087.     swap.w  d7
  1088.     dbra    d7,sy00_SU1
  1089. *
  1090.   rts
  1091.  
  1092. IDCT_clr1
  1093. *
  1094. *  S(x,y)
  1095. *
  1096.   moveq   #8-1,d7
  1097. sy00_clr1
  1098.     swap.w  d7
  1099.  
  1100.     movem.w (sp)+,d4-d5/a1-a5
  1101.     addq.w  #1*2,sp
  1102.  
  1103.     adda.l  a6,a1
  1104.     adda.l  a6,a2
  1105.     adda.l  a6,a3
  1106.     adda.l  a6,a4
  1107.     adda.l  a6,a5
  1108.  
  1109.     move.w  (a1)+,d1    COS1
  1110.     move.w  (a1)+,d0    COS3
  1111.     move.w  (a1)+,d3    COS5
  1112.     move.w  (a1),d2    COS7
  1113.  
  1114.     sub.w   (a3)+,d3
  1115.     add.w   (a3)+,d1
  1116.     sub.w   (a3)+,d2
  1117.     sub.w   (a3),d0
  1118.  
  1119.     sub.w   (a4)+,d0
  1120.     add.w   (a4)+,d2
  1121.     add.w   (a4)+,d1
  1122.     add.w   (a4),d3
  1123.  
  1124.     move.w  -(a2),d6    COS2
  1125.     move.w  -(a2),d7    COS6
  1126.     sub.w   -(a5),d7    * d7 =S2*cos6+S6*cos2
  1127.     add.w   -(a5),d6    * d6 =S2*cos2+S6*cos6
  1128.  
  1129.     sub.w   d5,d4  * d4=s0-s4
  1130.     add.w   d5,d5
  1131.     add.w   d4,d5  * d5=s0+s4
  1132. *
  1133.     sub.w   d7,d4    * d4=d4-d7
  1134.     add.w   d7,d7
  1135.     add.w   d4,d7    * d7=d4+d7
  1136. *
  1137.     sub.w   d6,d5    * d5=d5-d6
  1138.     add.w   d6,d6
  1139.     add.w   d5,d6    * d6=d5+d6
  1140. *
  1141. *  S(1,y),S(6,y)
  1142. *
  1143.     sub.w   d0,d7    S(6,y)
  1144.     add.w   d0,d0
  1145.     add.w   d7,d0    S(1,y)
  1146. *
  1147. *  S(0,y),S(7,y)
  1148. *
  1149.     sub.w   d1,d6    S(7,y)
  1150.     add.w   d1,d1
  1151.     add.w   d6,d1    S(0,y)
  1152. *
  1153. *  S(3,y),S(4,y)
  1154. *
  1155.     sub.w   d2,d5       S(4,y)
  1156.     add.w   d2,d2
  1157.     add.w   d5,d2       S(3,y)
  1158. *
  1159. *  S(2,y),S(5,y)
  1160. *
  1161.     sub.w   d3,d4    S(5,y)
  1162.     add.w   d3,d3
  1163.     add.w   d4,d3    S(2,y)
  1164.     movem.w d0-d7,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1165. *
  1166.     swap.w  d7
  1167.     dbra    d7,sy00_clr1
  1168. *
  1169.   rts
  1170.  
  1171.  
  1172.  
  1173.  
  1174. IDCT_clr2
  1175. *
  1176. *  S(x,y)
  1177. *
  1178.   moveq   #8-1,d7
  1179. sy00_clr2
  1180.  
  1181.     movem.w (sp)+,d4-d5/a1-a4
  1182.     addq.l  #2*2,sp
  1183.  
  1184.     adda.l  a6,a1
  1185.     adda.l  a6,a2
  1186.     adda.l  a6,a3
  1187.     adda.l  a6,a4
  1188.  
  1189.     move.w  (a1)+,d1    COS1
  1190.     move.w  (a1)+,d0    COS3
  1191.     move.w  (a1)+,d3    COS5
  1192.     move.w  (a1),d2    COS7
  1193.  
  1194.     sub.w   (a3)+,d3
  1195.     add.w   (a3)+,d1
  1196.     sub.w   (a3)+,d2
  1197.     sub.w   (a3),d0
  1198.  
  1199.     sub.w   (a4)+,d0
  1200.     add.w   (a4)+,d2
  1201.     add.w   (a4)+,d1
  1202.     add.w   (a4),d3
  1203.  
  1204.     move.w  -(a2),d6    COS2
  1205.     move.w  -(a2),a1    COS6
  1206.  
  1207.     sub.w   d5,d4  * d4=s0-s4
  1208.     add.w   d5,d5
  1209.     add.w   d4,d5  * d5=s0+s4
  1210. *
  1211.     sub.w   a1,d4    * d4=d4-a1
  1212.     add.l   a1,a1
  1213.     add.l   d4,a1    * a1=d4+a1
  1214. *
  1215.     sub.w   d6,d5    * d5=d5-d6
  1216.     add.w   d6,d6
  1217.     add.w   d5,d6    * d6=d5+d6
  1218. *
  1219. *  S(1,y),S(6,y)
  1220. *
  1221.     sub.l   d0,a1    S(6,y)
  1222.     add.w   d0,d0
  1223.     add.w   a1,d0    S(1,y)
  1224. *
  1225. *  S(0,y),S(7,y)
  1226. *
  1227.     sub.w   d1,d6    S(7,y)
  1228.     add.w   d1,d1
  1229.     add.w   d6,d1    S(0,y)
  1230. *
  1231. *  S(3,y),S(4,y)
  1232. *
  1233.     sub.w   d2,d5       S(4,y)
  1234.     add.w   d2,d2
  1235.     add.w   d5,d2       S(3,y)
  1236. *
  1237. *  S(2,y),S(5,y)
  1238. *
  1239.     sub.w   d3,d4    S(5,y)
  1240.     add.w   d3,d3
  1241.     add.w   d4,d3    S(2,y)
  1242.     movem.w d0-d6/a1,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1243. *
  1244.     dbra    d7,sy00_clr2
  1245. *
  1246.   rts
  1247.  
  1248.  
  1249.  
  1250. IDCT_clr2_SU1
  1251. *
  1252. *  S(x,y)
  1253. *
  1254.   move.w  5*2(sp),d0
  1255.   beq      IDCT_clr3
  1256.  
  1257.   movea.w d0,a4
  1258.   adda.l  a6,a4
  1259.   moveq   #8-1,d7
  1260. sy00_clr2_SU1
  1261.  
  1262.     movem.w (sp)+,d4-d5/a1-a3
  1263.     addq.w  #3*2,sp
  1264.  
  1265.     adda.l  a6,a1
  1266.     adda.l  a6,a2
  1267.     adda.l  a6,a3
  1268.  
  1269.     move.w  (a1)+,d1    COS1
  1270.     move.w  (a1)+,d0    COS3
  1271.     move.w  (a1)+,d3    COS5
  1272.     move.w  (a1),d2    COS7
  1273.  
  1274.     sub.w   (a3)+,d3
  1275.     add.w   (a3)+,d1
  1276.     sub.w   (a3)+,d2
  1277.     sub.w   (a3),d0
  1278.  
  1279.     sub.w   (a4)+,d0
  1280.     add.w   (a4)+,d2
  1281.     add.w   (a4)+,d1
  1282.     add.w   (a4),d3
  1283.     subq.w  #3*2,a4
  1284.  
  1285.     move.w  -(a2),d6    COS2
  1286.     move.w  -(a2),a1    COS6
  1287.  
  1288.     sub.w   d5,d4  * d4=s0-s4
  1289.     add.w   d5,d5
  1290.     add.w   d4,d5  * d5=s0+s4
  1291. *
  1292.     sub.w   a1,d4    * d4=d4-a1
  1293.     add.l   a1,a1
  1294.     add.l   d4,a1    * a1=d4+a1
  1295. *
  1296.     sub.w   d6,d5    * d5=d5-d6
  1297.     add.w   d6,d6
  1298.     add.w   d5,d6    * d6=d5+d6
  1299. *
  1300. *  S(1,y),S(6,y)
  1301. *
  1302.     sub.l   d0,a1    S(6,y)
  1303.     add.w   d0,d0
  1304.     add.w   a1,d0    S(1,y)
  1305. *
  1306. *  S(0,y),S(7,y)
  1307. *
  1308.     sub.w   d1,d6    S(7,y)
  1309.     add.w   d1,d1
  1310.     add.w   d6,d1    S(0,y)
  1311. *
  1312. *  S(3,y),S(4,y)
  1313. *
  1314.     sub.w   d2,d5       S(4,y)
  1315.     add.w   d2,d2
  1316.     add.w   d5,d2       S(3,y)
  1317. *
  1318. *  S(2,y),S(5,y)
  1319. *
  1320.     sub.w   d3,d4    S(5,y)
  1321.     add.w   d3,d3
  1322.     add.w   d4,d3    S(2,y)
  1323.     movem.w d0-d6/a1,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1324. *
  1325.     dbra    d7,sy00_clr2_SU1
  1326. *
  1327.   rts
  1328.  
  1329.  
  1330. IDCT_clr3
  1331. *
  1332. *  S(x,y)
  1333. *
  1334.   moveq   #8-1,d7
  1335. sy00_clr3
  1336.  
  1337.     movem.w (sp)+,d4-d5/a1-a3
  1338.     addq.l  #3*2,sp
  1339.  
  1340.     adda.l  a6,a1
  1341.     adda.l  a6,a2
  1342.     adda.l  a6,a3
  1343.  
  1344.     move.w  (a1)+,d1    COS1
  1345.     move.w  (a1)+,d0    COS3
  1346.     move.w  (a1)+,d3    COS5
  1347.     move.w  (a1),d2    COS7
  1348.  
  1349.     sub.w   (a3)+,d3
  1350.     add.w   (a3)+,d1
  1351.     sub.w   (a3)+,d2
  1352.     sub.w   (a3),d0
  1353.  
  1354.     move.w  -(a2),d6    COS2
  1355.     move.w  -(a2),a1    COS6
  1356.  
  1357.     sub.w   d5,d4  * d4=s0-s4
  1358.     add.w   d5,d5
  1359.     add.w   d4,d5  * d5=s0+s4
  1360. *
  1361.     sub.w   a1,d4    * d4=d4-a1
  1362.     add.l   a1,a1
  1363.     add.l   d4,a1    * a1=d4+a1
  1364. *
  1365.     sub.w   d6,d5    * d5=d5-d6
  1366.     add.w   d6,d6
  1367.     add.w   d5,d6    * d6=d5+d6
  1368. *
  1369. *  S(1,y),S(6,y)
  1370. *
  1371.     sub.l   d0,a1    S(6,y)
  1372.     add.w   d0,d0
  1373.     add.w   a1,d0    S(1,y)
  1374. *
  1375. *  S(0,y),S(7,y)
  1376. *
  1377.     sub.w   d1,d6    S(7,y)
  1378.     add.w   d1,d1
  1379.     add.w   d6,d1    S(0,y)
  1380. *
  1381. *  S(3,y),S(4,y)
  1382. *
  1383.     sub.w   d2,d5       S(4,y)
  1384.     add.w   d2,d2
  1385.     add.w   d5,d2       S(3,y)
  1386. *
  1387. *  S(2,y),S(5,y)
  1388. *
  1389.     sub.w   d3,d4    S(5,y)
  1390.     add.w   d3,d3
  1391.     add.w   d4,d3    S(2,y)
  1392.     movem.w d0-d6/a1,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1393. *
  1394.     dbra    d7,sy00_clr3
  1395. *
  1396.   rts
  1397.  
  1398.  
  1399. IDCT_clr4
  1400. *
  1401. *  S(x,y)
  1402. *
  1403.   moveq   #8-1,d7
  1404. sy00_clr4
  1405.  
  1406.     movem.w (sp)+,d4/a1-a3
  1407.     addq.w  #4*2,sp
  1408.  
  1409.     adda.l  a6,a1
  1410.     adda.l  a6,a2
  1411.     adda.l  a6,a3
  1412.  
  1413.     move.w  (a1)+,d1    COS1
  1414.     move.w  (a1)+,d0    COS3
  1415.     move.w  (a1)+,d3    COS5
  1416.     move.w  (a1),d2    COS7
  1417.  
  1418.     sub.w   (a3)+,d3
  1419.     add.w   (a3)+,d1
  1420.     sub.w   (a3)+,d2
  1421.     sub.w   (a3),d0
  1422.  
  1423.     move.w  -(a2),d6    COS2
  1424.     move.w  -(a2),a1    COS6
  1425.  
  1426.     move.w  d4,d5
  1427. *
  1428.     sub.w   a1,d4    * d4=d4-a1
  1429.     add.l   a1,a1
  1430.     add.l   d4,a1    * a1=d4+a1
  1431. *
  1432.     sub.w   d6,d5    * d5=d5-d6
  1433.     add.w   d6,d6
  1434.     add.w   d5,d6    * d6=d5+d6
  1435. *
  1436. *  S(1,y),S(6,y)
  1437. *
  1438.     sub.l   d0,a1    S(6,y)
  1439.     add.w   d0,d0
  1440.     add.w   a1,d0    S(1,y)
  1441. *
  1442. *  S(0,y),S(7,y)
  1443. *
  1444.     sub.w   d1,d6    S(7,y)
  1445.     add.w   d1,d1
  1446.     add.w   d6,d1    S(0,y)
  1447. *
  1448. *  S(3,y),S(4,y)
  1449. *
  1450.     sub.w   d2,d5       S(4,y)
  1451.     add.w   d2,d2
  1452.     add.w   d5,d2       S(3,y)
  1453. *
  1454. *  S(2,y),S(5,y)
  1455. *
  1456.     sub.w   d3,d4    S(5,y)
  1457.     add.w   d3,d3
  1458.     add.w   d4,d3    S(2,y)
  1459.     movem.w d0-d6/a1,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1460. *
  1461.     dbra    d7,sy00_clr4
  1462. *
  1463.   rts
  1464.  
  1465.  
  1466. IDCT_clr4_SU1
  1467. *
  1468. *  S(x,y)
  1469. *
  1470.   move.w  2*3(sp),d0
  1471.   beq     IDCT_clr5
  1472.  
  1473.   movea.w d0,a3
  1474.   adda.l  a6,a3
  1475.   moveq   #8-1,d7
  1476. sy00_clr4_SU1
  1477.  
  1478.     movem.w (sp)+,d5/a1-a2
  1479.     lea.l   5*2(sp),sp
  1480.  
  1481.     adda.l  a6,a1
  1482.     adda.l  a6,a2
  1483.  
  1484.     move.w  (a1)+,d1    COS1
  1485.     move.w  (a1)+,d0    COS3
  1486.     move.w  (a1)+,d3    COS5
  1487.     move.w  (a1),d2    COS7
  1488.  
  1489.     sub.w   (a3)+,d3
  1490.     add.w   (a3)+,d1
  1491.     sub.w   (a3)+,d2
  1492.     sub.w   (a3),d0
  1493.     subq.w  #3*2,a3
  1494.  
  1495.     move.w  -(a2),d6    COS2
  1496.     move.w  -(a2),a1    COS6
  1497.  
  1498.     move.w  d5,d4
  1499. *
  1500.     sub.w   a1,d4    * d4=d4-a1
  1501.     add.l   a1,a1
  1502.     add.l   d4,a1    * a1=d4+a1
  1503. *
  1504.     sub.w   d6,d5    * d5=d5-d6
  1505.     add.w   d6,d6
  1506.     add.w   d5,d6    * d6=d5+d6
  1507. *
  1508. *  S(1,y),S(6,y)
  1509. *
  1510.     sub.l   d0,a1    S(6,y)
  1511.     add.w   d0,d0
  1512.     add.w   a1,d0    S(1,y)
  1513. *
  1514. *  S(0,y),S(7,y)
  1515. *
  1516.     sub.w   d1,d6    S(7,y)
  1517.     add.w   d1,d1
  1518.     add.w   d6,d1    S(0,y)
  1519. *
  1520. *  S(3,y),S(4,y)
  1521. *
  1522.     sub.w   d2,d5       S(4,y)
  1523.     add.w   d2,d2
  1524.     add.w   d5,d2       S(3,y)
  1525. *
  1526. *  S(2,y),S(5,y)
  1527. *
  1528.     sub.w   d3,d4    S(5,y)
  1529.     add.w   d3,d3
  1530.     add.w   d4,d3    S(2,y)
  1531.     movem.w d0-d6/a1,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1532. *
  1533.     dbra    d7,sy00_clr4_SU1
  1534. *
  1535.   rts
  1536.  
  1537.  
  1538. IDCT_clr5
  1539. *
  1540. *  S(x,y)
  1541. *
  1542.   moveq   #8-1,d7
  1543. sy00_clr5
  1544.  
  1545.     movem.w (sp)+,d4/a1-a2
  1546.     lea.l   5*2(sp),sp
  1547.  
  1548.     adda.l  a6,a1
  1549.     adda.l  a6,a2
  1550.  
  1551.     move.w  (a1)+,d1    COS1
  1552.     move.w  (a1)+,d0    COS3
  1553.     move.w  (a1)+,d3    COS5
  1554.     move.w  (a1),d2    COS7
  1555.  
  1556.     move.w  -(a2),d6    COS2
  1557.     move.w  -(a2),a1    COS6
  1558.  
  1559.     move.w  d4,d5
  1560. *
  1561.     sub.w   a1,d4    * d4=d4-a2
  1562.     add.l   a1,a1
  1563.     add.l   d4,a1    * a2=d4+a2
  1564. *
  1565.     sub.w   d6,d5    * d5=d5-d6
  1566.     add.w   d6,d6
  1567.     add.w   d5,d6    * d6=d5+d6
  1568. *
  1569. *  S(1,y),S(6,y)
  1570. *
  1571.     sub.l   d0,a1    S(6,y)
  1572.     add.w   d0,d0
  1573.     add.w   a1,d0    S(1,y)
  1574. *
  1575. *  S(0,y),S(7,y)
  1576. *
  1577.     sub.w   d1,d6    S(7,y)
  1578.     add.w   d1,d1
  1579.     add.w   d6,d1    S(0,y)
  1580. *
  1581. *  S(3,y),S(4,y)
  1582. *
  1583.     sub.w   d2,d5       S(4,y)
  1584.     add.w   d2,d2
  1585.     add.w   d5,d2       S(3,y)
  1586. *
  1587. *  S(2,y),S(5,y)
  1588. *
  1589.     sub.w   d3,d4    S(5,y)
  1590.     add.w   d3,d3
  1591.     add.w   d4,d3    S(2,y)
  1592.     movem.w d0-d6/a1,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1593. *
  1594.     dbra    d7,sy00_clr5
  1595. *
  1596.   rts
  1597.  
  1598.  
  1599. IDCT_clr6
  1600. *
  1601. *  S(x,y)
  1602. *
  1603.   moveq   #8-1,d7
  1604. sy00_clr6
  1605.  
  1606.     move.w  (sp)+,d4
  1607.     movea.w (sp)+,a1
  1608.     lea.l   6*2(sp),sp
  1609.  
  1610.     adda.l  a6,a1
  1611.  
  1612.     move.w  (a1)+,d1    COS1
  1613.     move.w  (a1)+,d0    COS3
  1614.     move.w  (a1)+,d3    COS5
  1615.     move.w  (a1),d2    COS7
  1616.  
  1617.     move.w  d4,d5
  1618.     move.w  d4,a4
  1619.     move.w  d5,d6
  1620. *
  1621. *  S(1,y),S(6,y)
  1622. *
  1623.     sub.l   d0,a4    S(6,y)
  1624.     add.w   d0,d0
  1625.     add.w   a4,d0    S(1,y)
  1626. *
  1627. *  S(0,y),S(7,y)
  1628. *
  1629.     sub.w   d1,d6    S(7,y)
  1630.     add.w   d1,d1
  1631.     add.w   d6,d1    S(0,y)
  1632. *
  1633. *  S(3,y),S(4,y)
  1634. *
  1635.     sub.w   d2,d5       S(4,y)
  1636.     add.w   d2,d2
  1637.     add.w   d5,d2       S(3,y)
  1638. *
  1639. *  S(2,y),S(5,y)
  1640. *
  1641.     sub.w   d3,d4    S(5,y)
  1642.     add.w   d3,d3
  1643.     add.w   d4,d3    S(2,y)
  1644.     movem.w d0-d6/a4,-(a0)        store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1645. *
  1646.     dbra    d7,sy00_clr6
  1647. *
  1648.   rts
  1649.  
  1650.  
  1651.  
  1652. IDCT_clr6_SU1
  1653. *
  1654. *  S(x,y)
  1655. *
  1656.   movea.w 2(sp),a3
  1657.   movem.w (a6,a3.w),a1-a4
  1658.  
  1659.   moveq   #8-1,d7
  1660. sy00_clr6_SU1
  1661.  
  1662.     move.w  (sp)+,d0
  1663.     lea.l   2*7(sp),sp
  1664.  
  1665.     move.w  d0,d1
  1666.     move.w  d0,d2
  1667.     move.w  d0,d3
  1668.     move.w  d0,d4
  1669.     move.w  d0,d5
  1670.     move.w  d0,d6
  1671.     move.w  d0,a5
  1672. *
  1673.     sub.l   a2,a5    S(6,y)
  1674.     add.w   a2,d0    S(1,y)
  1675. *
  1676.     sub.w   a1,d6    S(7,y)
  1677.     add.w   a1,d1    S(0,y)
  1678. *
  1679.     sub.w   a4,d5    S(4,y)
  1680.     add.w   a4,d2    S(3,y)
  1681. *
  1682.     sub.w   a3,d4    S(5,y)
  1683.     add.w   a3,d3    S(2,y)
  1684.  
  1685.     movem.w d0-d6/a5,-(a0)    store S(1,y),S(0,y),S(3,y),S(2,y),S(5,y),S(4,y),S(7,y),S(6,y)
  1686. *
  1687.     dbra    d7,sy00_clr6_SU1
  1688. *
  1689.   rts
  1690.  
  1691.  .end
  1692.